]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
st-clipboard: Add trailing 0 to pasted text
authorCarlos Garnacho <carlosg@gnome.org>
Mon, 9 Sep 2019 15:43:17 +0000 (17:43 +0200)
committerCarlos Garnacho <mrgarnacho@gmail.com>
Mon, 9 Sep 2019 19:04:31 +0000 (19:04 +0000)
We translate the raw stream content far too directly into a char*,
it notably forgets that the stream does not have nul-ended data,
this means we are potentially adding garbage after the pasted content.

Tentatively fixes https://gitlab.gnome.org/GNOME/gnome-shell/issues/1570

src/st/st-clipboard.c

index bdd4104f376d8d2a36db023b443f6218371ecdd9..b2d8e7f940b10b1171277952b5f023b6e0a2a7a8 100644 (file)
@@ -128,14 +128,22 @@ transfer_cb (MetaSelection *selection,
              GAsyncResult  *res,
              TransferData  *data)
 {
-  const gchar *text = NULL;
+  gchar *text = NULL;
 
   if (meta_selection_transfer_finish (selection, res, NULL))
-    text = g_memory_output_stream_get_data (G_MEMORY_OUTPUT_STREAM (data->stream));
+    {
+      gsize data_size;
+
+      data_size =
+        g_memory_output_stream_get_data_size (G_MEMORY_OUTPUT_STREAM (data->stream));
+      text = g_new0 (char, data_size + 1);
+      memcpy (text, g_memory_output_stream_get_data (G_MEMORY_OUTPUT_STREAM (data->stream)), data_size);
+    }
 
   data->callback (data->clipboard, text, data->user_data);
   g_object_unref (data->stream);
   g_free (data);
+  g_free (text);
 }
 
 /**